{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/root/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
      "  from ._conv import register_converters as _register_converters\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data\n",
    "from matplotlib import pyplot as plt\n",
    "%matplotlib inline\n",
    "tf.logging.set_verbosity(tf.logging.INFO)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From <ipython-input-2-8ea0c10d98f3>:1: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "WARNING:tensorflow:From /root/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "WARNING:tensorflow:From /root/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting /home/wangbin/Documents/train-images-idx3-ubyte.gz\n",
      "WARNING:tensorflow:From /root/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "Extracting /home/wangbin/Documents/train-labels-idx1-ubyte.gz\n",
      "Extracting /home/wangbin/Documents/t10k-images-idx3-ubyte.gz\n",
      "Extracting /home/wangbin/Documents/t10k-labels-idx1-ubyte.gz\n",
      "WARNING:tensorflow:From /root/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "Datasets(train=<tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet object at 0x7f86bd306668>, validation=<tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet object at 0x7f86bcf35cf8>, test=<tensorflow.contrib.learn.python.learn.datasets.mnist.DataSet object at 0x7f86bcf35d30>)\n",
      "(55000, 784)\n"
     ]
    }
   ],
   "source": [
    "mnist=input_data.read_data_sets(\"/home/wangbin/Documents/\")\n",
    "print(mnist)\n",
    "print(mnist.train.images.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(55000,)\n",
      "(5000, 784)\n",
      "(5000,)\n",
      "(10000, 784)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "print(mnist.train.labels.shape)\n",
    "print(mnist.validation.images.shape)\n",
    "print(mnist.validation.labels.shape)\n",
    "print(mnist.test.images.shape)\n",
    "print(mnist.test.labels.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f86b9a79780>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8,8))\n",
    "for idx in range(16):\n",
    "    plt.subplot(4,4,idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "x=tf.placeholder('float',[None,784])\n",
    "y=tf.placeholder('int64',[None])\n",
    "learning_rate=tf.placeholder('float')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def initialize(shape,stddev=0.1):\n",
    "    return tf.truncated_normal(shape,stddev=0.1)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From /root/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Colocations handled automatically by placer.\n"
     ]
    }
   ],
   "source": [
    "L1_units_count=100\n",
    "W_1=tf.Variable(initialize([784,L1_units_count]))\n",
    "b_1=tf.Variable(initialize([L1_units_count]))\n",
    "logits_1=tf.matmul(x,W_1)+b_1\n",
    "output_1=tf.nn.relu(logits_1)\n",
    "\n",
    "L2_units_count=10\n",
    "W_2=tf.Variable(initialize([L1_units_count,L2_units_count]))\n",
    "b_2=tf.Variable(initialize([L2_units_count]))\n",
    "logits_2=tf.matmul(output_1,W_2)+b_2\n",
    "logits=logits_2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "cross_entropy_loss=tf.reduce_mean(\n",
    "tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,labels=y))\n",
    "optimizer=tf.train.GradientDescentOptimizer(\n",
    "learning_rate=learning_rate).minimize(cross_entropy_loss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred=tf.nn.softmax(logits)\n",
    "correct_pred=tf.equal(tf.argmax(pred,1),y)\n",
    "accuracy=tf.reduce_mean(tf.cast(correct_pred,tf.float32))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### saver "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size=32\n",
    "training_step=1000\n",
    "saver=tf.train.Saver()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "after 100 training steps, the loss is 0.515349,the validation accuracy is 0.856\n",
      "after 200 training steps, the loss is 0.365446,the validation accuracy is 0.9036\n",
      "after 300 training steps, the loss is 0.170564,the validation accuracy is 0.9282\n",
      "after 400 training steps, the loss is 0.363421,the validation accuracy is 0.9264\n",
      "after 500 training steps, the loss is 0.4283,the validation accuracy is 0.9282\n",
      "after 600 training steps, the loss is 0.0932871,the validation accuracy is 0.9396\n",
      "after 700 training steps, the loss is 0.147577,the validation accuracy is 0.9472\n",
      "after 800 training steps, the loss is 0.18129,the validation accuracy is 0.9462\n",
      "after 900 training steps, the loss is 0.0711945,the validation accuracy is 0.958\n",
      "the training is finish!\n",
      "the test accuarcy is : 0.9535\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    validate_data={\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data={x: mnist.test.images, y: mnist.test.labels}\n",
    "    for i in range(training_step):\n",
    "        xs,ys=mnist.train.next_batch(batch_size)\n",
    "        _,loss=sess.run(\n",
    "          [optimizer,cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: xs,\n",
    "                y: ys,\n",
    "                learning_rate: 0.3\n",
    "            }\n",
    "        )\n",
    "        if i>0 and i%100==0:\n",
    "            validate_accuracy=sess.run(accuracy,feed_dict=validate_data)\n",
    "            print('after %d training steps, the loss is %g,the validation accuracy is %g'%(i,loss,validate_accuracy))\n",
    "            saver.save(sess,'./model.ckpt',global_step=1)\n",
    "    print('the training is finish!')\n",
    "    acc=sess.run(accuracy,feed_dict=test_data)\n",
    "    print('the test accuarcy is :',acc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from /home/wangbin/Documents/model.ckpt-1\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f86b9e6d4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    ckpt=tf.train.get_checkpoint_state('/home/wangbin/Documents/')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess,ckpt.model_checkpoint_path)\n",
    "        final_pred,acc=sess.run([pred,accuracy],feed_dict={\n",
    "            x: mnist.test.images[:16],\n",
    "            y: mnist.test.labels[:16]\n",
    "        })\n",
    "        orders=np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8,8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order=orders[idx,:][-1]\n",
    "            prob=final_pred[idx,:][order]\n",
    "            plt.subplot(4,4,idx+1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}]'.format(mnist.test.labels[idx],order,prob*100))\n",
    "            plt.imshow(mnist.test.images[idx].reshape((28,28)))\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
